#include <iostream>

double f(double x, int n) {
    if (n == 0) {
        return 1.0;
    }
    if (n < 0) {
        return f(1 / x, -n);
    }
    if ((n&1) == 0) {
        return f(x, n / 2) * f(x, n / 2);
    }
    else{
        return f(x, (n - 1)/ 2) * f(x, (n - 1)/ 2) * x;
    }
}

int main() {
    int n;
    double x;
    std::cout << "输入底数： ";
    std::cin >> x;
    std::cout << "输入指数： ";
    std::cin >> n;
    if (x == 0 && n <= 0) {
        std::cout << "error" << std::endl;
    }
    else {
        std::cout << f(x, n) << std::endl;
    }
    return 0;
}
